<?php 
class Agregado extends AppModel {
    var $name = 'Agregado';
 
    var $validate = array(
        'descripcion' => array(            
            // solo letras, espacios y numeros enteros - i:case insensitive
            // longitud: minimo 3 maximo 200 caracteres
            'rule'    => '/^[a-z0-9\s]{3,200}$/i',
            'allowEmpty' => false,
            'message' => 'La descripción no es válida'
        ),
        'codigo' => array(
            'regla1' => array( 
                // solo letras y numeros enteros - i: case insensitive
                // longitud: minimo 1 maximo 10 caracteres
                'rule'    => '/^[a-z0-9]{1,10}$/i',
                'allowEmpty' => false,
                'message' => 'El código no es un valor válido.'
            ),
            'regla2' => array( 
                // custom rule para controlar duplicados
                'rule' => array('existeOtro'),
                'message' => 'El código usado ya existe.'
            ),
        ),    
        'tipo' => array(            
            'rule'    => 'notEmpty',
            'allowEmpty' => false,
            'required' => true,
            'message' => 'Elija un tipo'
        ),        
        'precio' => array(            
            // valida que el numero sea un valor monetario
            'rule'    => array('money', 'left'),
            'allowEmpty' => false,
            'message' => 'El precio no es valor válido'
        )
    );
       
    public function existeOtro() {
        // busca que no haya otro id con el mismo campo codigo
        $filtro_dup = array('Agregado.id !=' => $this->id,             
                            'Agregado.codigo' => $this->data['Agregado']['codigo']);
        $cantExistentes = $this->find('count', array(
            'conditions' => $filtro_dup,
            'recursive' => -1
        ));
        return $cantExistentes == 0;
    }    
   
}
?>